/**
 * IpackDataMonitorService.java
 * Created at 2017-2-20
 * Created by shihui
 * Copyright (C) 2017 BROADTEXT SOFTWARE, All rights reserved.
 */
package com.broadtext.rms.monitor.service;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.multipart.MultipartFile;

import com.broadtext.common.bean.EntityPageBean;
import com.broadtext.common.exp.DaoException;
import com.broadtext.common.exp.ServiceException;
import com.broadtext.common.service.IEntityService;
import com.broadtext.rms.monitor.model.FenceGpsInfo;
import com.broadtext.rms.monitor.model.PackLocationInfo;
import com.broadtext.rms.monitor.model.TtPack;
import com.broadtext.rms.monitor.model.TtPackCurrent;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;

/**
 * <p>ClassName: IPackDataMonitorService</p>
 * <p>Description: 电池数据监控服务接口</p>
 * <p>Author: shihui</p>
 * <p>Date: 2017-2-20</p>
 */
public interface IPackDataMonitorService extends IEntityService<TtPack> {

    /**
     * 
     * <p>Description: 按条件查询所有电池监控数据</p>
     * @param map 查询条件
     * @param pageBounds 翻页
     * @return 查询结果
     * @throws ServiceException 异常
     */
    EntityPageBean<Object> findPackMonitor(Map<String, Object> map, PageBounds pageBounds) throws ServiceException;

    /**
     * 
     * <p>Description: 将电池置为失效</p>
     * @param packIdArray 电池ID
     * @param parMap 更新参数
     * @return 操作结果
     * @throws ServiceException 异常
     */
    Map<String, Object> setPackUnenable(String[] packIdArray, Map<String, Object> parMap) throws ServiceException;

    /**
     * 
     * <p>Description: 根据条件查询监控电池当前实时信息</p>
     * @param entity 实体   
     * @return 结果集
     * @throws DaoException 异常
     */
    Map<String, Object> getMonitorDataInfoCurrent(TtPackCurrent entity) throws DaoException;

    /**
     * 
     * <p>Description: 监控电池实时采集点电压温度信息</p>
     * @param paramsMap 查询实体
     * @return 结果集
     * @throws DaoException 异常
     */
    Map<String, Object> getPackChartInfo(Map<String, Object> paramsMap) throws DaoException;

    /**
     * 
     * <p>Description: 检查报废状态</p>
     * @param ids 主键数组
     * @return 检查结果
     * @throws DaoException 异常
     */
    Object checkFailureStatus(String[] ids) throws DaoException;

    /**
     * 
     * <p>Description: 报废</p>
     * @param ids 主键数组
     * @param currentUser 当前用户
     * @return 结果集
     * @throws DaoException 异常
     */
    void setFailure(String[] ids, String currentUser) throws DaoException;

    /**
     * 
     * <p>Description: 检查无效状态</p>
     * @param ids 主键数组
     * @return 结果集
     * @throws DaoException 异常
     */
    Object checkEnableStatus(String[] ids) throws DaoException;

    /**
     * 
     * <p>Description: 获取监控电池当前位置信息</p>
     * @param c 终端id
     * @param p 电池id
     * @return 电池位置信息
     * @throws DaoException 异常信息
     */
    PackLocationInfo findCurrentLocationInfo(String c, String p) throws DaoException;

    /**
     * 
     * <p>Description: 获取历史位置列表</p>
     * @param map 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    List<PackLocationInfo> findHistoryLocationList(Map<String, Object> map) throws DaoException;

    /**
     * 
     * <p>Description: 分页查询历史报警</p>
     * @param map 查询条件
     * @param pageBounds 分页
     * @return 结果集
     * @throws DaoException 异常
     */
    EntityPageBean<Object> findHistoryWarningList(Map<String, Object> map, PageBounds pageBounds) throws DaoException;
    
    /**
     * 
     * <p>Description: 分页查询 监控电池历史数据</p>
     * @param map 查询条件
     * @param pageBounds 分页
     * @return 结果
     * @throws DaoException 异常
     */
    EntityPageBean<Object> findMonitorHistoryDataList(Map<String, Object> map, PageBounds pageBounds) throws DaoException;

    /**
     * 
     * <p>Description: 查询报文列表并压缩</p>
     * @param pkId 告警记录Id
     * @param sysuser 当前操作用户
     * @return 回传结果信息
     * @throws ServiceException 异常
     */
    Map<String, Object> dataBackToZip(String pkId, String sysuser) throws ServiceException;

    /**
     * 
     * <p>Description: 验证历史告警记录是否未处理且已回传</p>
     * @param idArray 告警记录ID
     * @return 验证是否通过
     * @throws ServiceException 异常
     */
    boolean checkUnhandled(String[] idArray) throws ServiceException;

    /**
     * 
     * <p>Description: 验证历史告警记录是否未处理且未回传</p>
     * @param idArray 告警记录ID
     * @return 验证是否通过
     * @throws ServiceException 异常
     */
    boolean checkUnneedhandled(String[] idArray) throws ServiceException;

    /**
     * 
     * <p>Description: 更新历史告警记录处理结果</p>
     * @param idArray 告警记录ID
     * @param handleType 更新类型：handled=已处理；unneed=无需处理
     * @param sysuser 当前操作用户
     * @return 操作结果
     * @throws ServiceException 异常
     */
    Map<String, Object> updateAlertHandled(String[] idArray, String handleType, String sysuser) throws ServiceException;

    /**
     * 
     * <p>Description: 查询电池历史数据详情</p>
     * @param queryMap 查询条件 电池终端id+电池唯一序列号+采集时间
     * @return 结果集
     * @throws DaoException 异常
     * @throws ParseException 
     */
    Map<String, Object> findPackHistoryDataDetail(Map<String, Object> queryMap) throws DaoException, ParseException;

    /**
     * 
     * <p>Description: 查询电池历史数据 温度电压图表信息</p>
     * @param queryMap 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    List<Map<String, Object>> findEchartHistoryData(Map<String, Object> queryMap) throws DaoException;
    
    /**
     * 
     * <p>Description: 查询电池历史数据 温度电压图表信息</p>
     * @param queryMap 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    List<Map<String, Object>> findEchartHistoryData1(Map<String, Object> queryMap) throws DaoException;

    /**
     * 
     * <p>Description:  电池历史数据  位置监控获取监控电池位置信息</p>
     * @param queryMap 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    PackLocationInfo findHistoryLocationInfo(Map<String, Object> queryMap) throws DaoException;

    /**
     * 
     * <p>Description: 获取原始报文压缩文档存储路径</p>
     * @param pkId 告警记录ID
     * @return 原始报文压缩文档存储路径
     * @throws ServiceException 异常
     */
    String getAlertZipPath(String pkId) throws ServiceException;

    /**
     * 
     * <p>Description: 历史轨迹列表轨迹查询</p>
     * @param map 查询条件
     * @param pageBounds 分页
     * @return 结果集
     * @throws DaoException 异常
     */
    EntityPageBean<PackLocationInfo> findHistoryLocationListByPage(Map<String, Object> map, PageBounds pageBounds) throws DaoException;

    /**
     * 
     * <p>Description: 查询导出列表list</p>
     * @param map 结果集
     * @param response 响应
     * @throws DaoException 异常
     */
    void findHistoryLocationExportList(Map<String, Object> map, HttpServletResponse response) throws DaoException;

    /**
     * 
     * <p>Description: 检查掉电状态</p>
     * @param params 查询条件
     * @return 结果
     * @throws DaoException 异常
     */
    Object checkPowerFailStatus(Map<String, Object> params) throws DaoException;

    /**
     * 
     * <p>Description: 检查离线文件是否已经上传过</p>
     * @param fileNameLists 离线文件名list
     * @return 结果集
     * @throws DaoException 异常
     */
    Object checkOfflineFileExist(List<String> fileNameLists) throws DaoException;

    /**
     * 
     * <p>Description: 调用WCF服务</p>
     * @param request 请求
     * @param dataList 报文信息
     * @param files 文件
     * @return 调用结果
     * @throws DaoException 异常
     */
    Object callWCFService(HttpServletRequest request, List<String> dataList, MultipartFile[] files) throws DaoException;

    /**
     * 获取电子围栏位置信息
     * @param c 终端Id
     * @param p 电池Id
     * @return 结果集
     * @throws DaoException 异常
     */
	Map<String, Object> getEfenceInfo(String c, String p) throws DaoException;

	/**
	 * 保存电子围栏数据
	 * @param dataList
	 * @throws DaoException 异常
	 */
	void saveEfenceInfo(List<FenceGpsInfo> dataList) throws DaoException;
	
	Map<String,Object> checkPackState(Map<String, Object> params) throws DaoException;

	Map<String, Object> getPackCode() throws DaoException;

}
